/**
 *   This file is part of WiFiStorer.

    WiFiStorer is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    WiFiStorer is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with WiFiStorer.  If not, see <http://www.gnu.org/licenses/>.
    
    @author Ontic Soluciones
    @license GNU GPLv3
    @copyright 2010 Ontic Soluciones
    @link http://www.ontic.es
    @contact android@ontic.es
 */


package com.Storer;

import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.Storer.R;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

/**
 * Crea el mapa de GoogleMaps y pinta la red que seleccionamos en la lista
 * @author Ontic Soluciones
 * @see MiOverlay
 *
 */
public class PintaMapa extends MapActivity
{
	private MapView mapView;
	private Bundle b;
	private Cursor c;
	private Context context;
	private TextView text;
	
	/**
	 * Llamado cuando se crea la Actividad.
	 */
	public void onCreate(Bundle savedInstanceState)
	{
		 super.onCreate(savedInstanceState);
		 setContentView(R.layout.mapa);
		 context = getApplicationContext();;
		
		 text = (TextView) findViewById(R.id.textMap);
		 mapView = (MapView) findViewById(R.id.mapview);
		 
		 b=new Bundle();
		 
		 //Llamada a Lista Tablas para elegir una wifi.
		 Intent i = new Intent(this, ListaTablas.class);
		 i.putExtras(b);
		 startActivityForResult(i,3); 
		}
	
	/**
	 * Ejecutado cuando la actividad llamada nos envía el dato que le pedimos. Lee el resultado que nos
	 * envía y llama al método creaMapa pasándole como parámetros dichos datos.
	 * 
	 */
	public void onActivityResult(int requestCode, int resultCode, Intent data)
	{	  
		
		if(resultCode == RESULT_OK)
		{
			b =data.getExtras();
			String wifi = data.getStringExtra("wifi");	
			String tabla = data.getStringExtra("tabla");
	     	super.onActivityResult(requestCode, resultCode, data);     	
			creaMapa(wifi, tabla);	
		}
	}
	
	public void onPause()
	{
		super.onPause();
	}

	/**
	 * Crea el mapa de GoogleMaps y pinta un Overlay por encima con puntos que representan a la red que 
	 * le pasamos como parámetro
	 * @param wifi La mac de la red que tiene que pintar
	 * @param tabla La tabla de la BBDD donde está la red a pintar.
	 */
	private void creaMapa(String wifi, String tabla) 
	{
		// TODO Auto-generated method stub
		 MapController mc = mapView.getController();
		 
		 DataBaseHelper db = new DataBaseHelper(this);
		 
		 SQLiteDatabase DB = db.getReadableDatabase();
		 
		 c=  DB.rawQuery("select lat, lng, ssid from "+tabla+" where bssid='"+wifi+"'",null);
		 c.moveToNext();
		 
		 if(c.moveToFirst())
		 mc.animateTo(new GeoPoint(c.getInt(0),c.getInt(1)));	
		 MiOverlay overlay = new MiOverlay(DB, this, wifi, tabla);
		 mapView.getOverlays().add(overlay);
		 
		 text.setText("SSID: "+c.getString(2)+ "\nMAC: "+wifi);
		 
		 mapView.invalidate();
		 @SuppressWarnings("deprecation")
		 View zoomView = mapView.getZoomControls();
		 LinearLayout myzoom = (LinearLayout) findViewById(R.id.myzoom);
		 myzoom.addView(zoomView);
		    
		 mapView.displayZoomControls(true);
		 mc.setZoom(18); 
	}

	@Override
	protected boolean isRouteDisplayed() {
		// TODO Auto-generated method stub
		return false;
	}
		
	/**
	 * Crea el menú que se muestra cuando pulsamos el botón en el terminal.
	 */
	public boolean onCreateOptionsMenu(Menu menu) 
	{
        menu.add(0, 0, 0,R.string.kml).setIcon(android.R.drawable.ic_menu_edit);
        menu.add(0, 1, 0, R.string.anotherWifi).setIcon(android.R.drawable.ic_menu_mapmode);
        menu.add(0, 4, 0, R.string.sendKml).setIcon(android.R.drawable.ic_dialog_email);
          
        return(super.onCreateOptionsMenu(menu));
    }
    

	/**
	 * Detecta qué opción se ha elegido y lanza la actividad correspondiente.
	 */
	@Override
	public boolean onOptionsItemSelected(MenuItem item) 
	{
	    switch (item.getItemId()) 
	    {
		    case 0:
		    	Intent i = new Intent(context, ListaKml.class);
		        startActivity(i);
		        return true;
		    case 1:
		    	Intent intent = new Intent(context ,PintaMapa.class);
				startActivity(intent);
				finish();
				return true;
		    case 4: 
		    	Intent inte = new Intent(context, SendKml.class);
		    	startActivity(inte);
		    	return true;
		    default:
	
		        return super.onOptionsItemSelected(item);
	    }
	}   
}
